#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <unistd.h>
#define MAXARGS     20              
#define ARGLEN      100             
int execute( char *arglist[] )
{
    execvp(arglist[0], arglist);        
        perror("execvp failed");
	    exit(1);
	    }

	    char * makestring( char *buf )
	    {
	        char    *cp;

		    buf[strlen(buf)-1] = '\0';      
		        cp = malloc( strlen(buf)+1 );       
			    if ( cp == NULL ){          
			            fprintf(stderr,"no memory\n");
				            exit(1);
					        }
						    strcpy(cp, buf);        
						        return cp;          
							}
							int main()
							{
							    char    *arglist[MAXARGS+1];        
							        int     numargs;            
								    char    argbuf[ARGLEN];         

								        numargs = 0;
									    while ( numargs < MAXARGS )
									        {                   
										        printf("Arg[%d]? ", numargs);
											        if ( fgets(argbuf, ARGLEN, stdin) && *argbuf != '\n' )
												            arglist[numargs++] = makestring(argbuf);
													            else
														            {
															                if ( numargs > 0 ){     
																	                arglist[numargs]=NULL;  
																			                execute( arglist ); 
																					                numargs = 0;        
																							            }
																								            }
																									        }
																										    return 0;
																										    }
